package com.codeduck.injection;

/**
 * Bean 的注入方式
 * 1。@Bean注入 {@link com.codeduck.injection.config.UserBeanConfig}
 * 2. @ComponentScan 与 @Component 结合注入 {@link com.codeduck.injection.config.TaskBeanConfig}
 * 3. 使用@ComponentScan注解的属性（includeFilters 与 excludeFilters ）来确定需要被注入Bean的筛选
 *          {@link com.codeduck.injection.config.ComponentScanFilterConfig}
 * 4. Bean 的作用域范围 {@link com.codeduck.injection.config.ScopeBeanConfig}
 * 5. @Lazy 懒加载 {@link com.codeduck.injection.config.LazyBeanConfig}
 * 6. 条件注入
 *          @Conditional {@link com.codeduck.injection.config.ConditionBeanConfig}
 *          @Profile {@link com.codeduck.injection.config.ProfileBeanConfig}
 * 7. 导入组件： 到目前为止，可以使用包扫描和@Bean来实现组件注册。除此之外，我们还可以使用@Import来快速地往IOC容器中添加组件。
 *          @Import: 快速注入一个Bean {@link com.codeduck.injection.config.ImportBeanConfig}
 *          ImportSelector接口： 组合多个Bean，通过@Import一次性注入 {@link com.codeduck.injection.config.ImportSelectorBeanConfig}
 *          ImportBeanDefinitionRegistrar接口: 手动往IOC容器导入Bean {@link com.codeduck.injection.config.ImportBeanDefinitionRegistrarConfig}
 * 8. 使用FactoryBean注册组件 {@link com.codeduck.injection.config.FactoryBeanConfig}
 */